<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>客户端连接缺省</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="SECT1">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="runtime-config-autovacuum.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="runtime-config.html">快退</a></td><td width="60%" align="center" valign="bottom">章17. 服务器配置</td><td width="10%" align="right" valign="top"><a href="runtime-config.html">快进</a></td><td width="10%" align="right" valign="top"><a href="runtime-config-locks.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="SECT1"><h1 class="SECT1"><a name="RUNTIME-CONFIG-CLIENT">17.10. 客户端连接缺省</a></h1>
<div class="SECT2"><h2 class="SECT2"><a name="RUNTIME-CONFIG-CLIENT-STATEMENT">17.10.1. 语句行为</a></h2>
<div class="VARIABLELIST">
<dl>
<dt><a name="GUC-SEARCH-PATH"></a><tt class="VARNAME">search_path</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>这个变量声明模式的搜索顺序，在一个被引用对象(表、数据类型、函数等)只是一个简单名字，没有附加模式部分时需要这样的搜索。如果在另外一个模式里有一个相同的对象名，那么使用在这个搜索路径中找到的第一个。一个不在搜索路径中任何一个模式里出现的对象只能通过其所在模式的全称(打点的)名字来声明。</p>
<p><tt class="VARNAME">search_path</tt> 的值必需是一个逗号分隔的模式名列表。列表中的特殊值 <tt class="LITERAL">$user</tt> 与 <code class="FUNCTION">SESSION_USER</code> 所代换的名字一样(如果存在这个模式的话，否则 <tt class="LITERAL">$user</tt> 将被忽略)。</p>
<p>系统表模式 <tt class="LITERAL">pg_catalog</tt> 总是被搜索，不管是否在搜索路径。如果在路径中，那么按照路径指定的顺序搜索，否则它将在任何路径项<span class="emphasis"><i class="EMPHASIS">之前</i></span>搜索。我们还要注意的是，临时表模式 <tt class="LITERAL">pg_temp_<tt class="REPLACEABLE"><i>nnn</i></tt></tt> 也隐含在任何这些项之前搜索。</p>
<p>如果创建对象时没有声明特定的目标模式，那么它将被放进搜索路径中的第一个模式。如果搜索路径是空的，那么会报告一个错误。</p>
<p>这个参数的缺省值是 <tt class="LITERAL">'"$user", public'</tt> (如果没有 <tt class="LITERAL">public</tt> 模式那么第二部分将被忽略)。这样就支持共享使用一个数据库(没有用户拥有私有模式，所有人都共享使用 <tt class="LITERAL">public</tt>)、私有的针对每个用户的模式、以及两者的组合。其它效果可以通过全局或者针对每个用户修改搜索路径设置获取。</p>
<p>搜索路径当前值可以用 SQL 函数 <code class="FUNCTION">current_schemas()</code> 检查。它和检查 <tt class="VARNAME">search_path</tt> 的值不太一样，因为 <code class="FUNCTION">current_schemas()</code> 显示的是在 <tt class="VARNAME">search_path</tt> 里出现的请求如何被分析。</p>
<p>有关模式处理的更多信息，参阅<a href="ddl-schemas.html">节5.7</a>。</p></dd>
<dt><a name="GUC-DEFAULT-TABLESPACE"></a><tt class="VARNAME">default_tablespace</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>这个变量声明当 <tt class="COMMAND">CREATE</tt> 命令没有明确声明表空间时，所创建对象(表和索引等)的缺省表空间。</p>
<p>值要么是一个表空间的名字，要么是一个表明使用当前数据库缺省表空间的空字符串。如果这个数值和任意现存表空间的名字都不匹配，那么 PostgreSQL 将自动使用当前数据库的缺省表空间。</p>
<p>有关表空间的更多的信息，参阅<a href="manage-ag-tablespaces.html">节19.6</a>。</p></dd>
<dt><a name="GUC-CHECK-FUNCTION-BODIES"></a><tt class="VARNAME">check_function_bodies</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>这个参数通常是 <tt class="LITERAL">on</tt> 。设置为 <tt class="LITERAL">off</tt> 表示在 <a href="sql-createfunction.html"><i>CREATE FUNCTION</i></a> 时关闭函数体字符串的合法性检查。关闭合法性检查有时候会有用，比如避免从转储中恢复函数定义时向前引用的问题。</p></dd>
<dt><a name="GUC-DEFAULT-TRANSACTION-ISOLATION"></a><tt class="VARNAME">default_transaction_isolation</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>每个 SQL 事务都有一个隔离级别，可以是"读未提交"，"读已提交"，"可重复读"或者是"可串性化"。这个参数控制每个新事务的隔离级别。缺省是读已提交。</p>
<p>参考<a href="mvcc.html">章12</a>和 <a href="sql-set-transaction.html"><i>SET TRANSACTION</i></a> 获取更多信息。</p></dd>
<dt><a name="GUC-DEFAULT-TRANSACTION-READ-ONLY"></a><tt class="VARNAME">default_transaction_read_only</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>只读的 SQL 事务不能修改非临时表。这个参数控制每个新事务的只读状态。缺省是 <tt class="LITERAL">off</tt>(读/写)。</p>
<p>参考 <a href="sql-set-transaction.html"><i>SET TRANSACTION</i></a> 获取更多信息。</p></dd>
<dt><a name="GUC-STATEMENT-TIMEOUT"></a><tt class="VARNAME">statement_timeout</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>退出任何使用了超过此参数指定时间(毫秒)的语句，从服务器收到命令时开始计时。如果 <tt class="VARNAME">log_min_error_statement</tt> 设置为 <tt class="LITERAL">ERROR</tt> 或者更低，那么也会在日志中记录超时。零值(缺省)关闭这个计时器。</p></dd>
<dt><a name="GUC-VACUUM-FREEZE-MIN-AGE"></a><tt class="VARNAME">vacuum_freeze_min_age</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>指定 <tt class="COMMAND">VACUUM</tt> 在扫描一个表时用于判断是否用 <tt class="LITERAL">FrozenXID</tt> 替换事务ID的中断寿命(在同一个事务中)。缺省值为 100000000(1亿)。虽然用户可以指定一个 0-1000000000 之间的值，但是 <tt class="COMMAND">VACUUM</tt> 将会悄无声息的将有效值限制在 <a href="runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE">autovacuum_freeze_max_age</a> 的一半之内。更多信息参见 <a href="routine-vacuuming.html#VACUUM-FOR-WRAPAROUND">节22.1.3</a>。</p></dd>
</dl>
</div>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="RUNTIME-CONFIG-CLIENT-FORMAT">17.10.2. 区域和格式化</a></h2>
<div class="VARIABLELIST">
<dl>
<dt><a name="GUC-DATESTYLE"></a><tt class="VARNAME">DateStyle</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置日期和时间值的显示格式，以及有歧义的输入值的解析规则。由于历史原因，这个变量包含两个独立的部分：输出格式声明(<tt class="LITERAL">ISO</tt>, <tt class="LITERAL">Postgres</tt>, <tt class="LITERAL">SQL</tt>, <tt class="LITERAL">German</tt>)、输入输出的年/月/日顺序(<tt class="LITERAL">DMY</tt>, <tt class="LITERAL">MDY</tt>, <tt class="LITERAL">YMD</tt>)。这两个可以独立设置或者一起设置。关键字 <tt class="LITERAL">Euro</tt> 和 <tt class="LITERAL">European</tt> 等价于 <tt class="LITERAL">DMY</tt> ；关键字 <tt class="LITERAL">US</tt>, <tt class="LITERAL">NonEuro</tt>, <tt class="LITERAL">NonEuropean</tt> 等价于 <tt class="LITERAL">MDY</tt> 。参阅<a href="datatype-datetime.html">节8.5</a>获取更多信息。内置缺省是 <tt class="LITERAL">ISO, MDY</tt> ，但是 <span class="APPLICATION">initdb</span> 将在初始化配置文件时根据 <tt class="VARNAME">lc_time</tt> 选择一个合适的默认设置。</p></dd>
<dt><a name="GUC-TIMEZONE"></a><tt class="VARNAME">timezone</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置用于显示和解析时间戳的时区。缺省值 <tt class="LITERAL">'unknown'</tt> 意味着使用系统环境声明的时区。参阅<a href="datatype-datetime.html">节8.5</a>获取更多信息。</p></dd>
<dt><a name="GUC-TIMEZONE-ABBREVIATIONS"></a><tt class="VARNAME">timezone_abbreviations</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置服务器接受日期时间输入中使用的时区缩写集合。缺省值 <tt class="LITERAL">'Default'</tt> 在全世界大多数地方都能工作的很好。另外的可用值还有'Australia'和'India'等其它值。参见<a href="datetime-appendix.html">附录B</a>以获取更多信息。</p></dd>
<dt><a name="GUC-EXTRA-FLOAT-DIGITS"></a><tt class="VARNAME">extra_float_digits</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>这个参数为浮点数值调整显示的数据位数，浮点类型包括 <tt class="TYPE">float4</tt>, <tt class="TYPE">float8</tt> 以及几何数据类型。参数值加在标准的数据位数上(<tt class="LITERAL">FLT_DIG</tt> 或 <tt class="LITERAL">DBL_DIG</tt> 中合适的)。数值可以设置为最高 2 ，以包括部分关键的数据位；这个功能对转储那些需要精确恢复的浮点数据特别有用。或者你也可以把它设置位负数以消除不需要的数据位。</p></dd>
<dt><a name="GUC-CLIENT-ENCODING"></a><tt class="VARNAME">client_encoding</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置客户端编码(字符集)。缺省使用数据库编码。</p></dd>
<dt><a name="GUC-LC-MESSAGES"></a><tt class="VARNAME">lc_messages</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置信息显示的语言。可接受的值是系统相关的；参阅<a href="locale.html">节21.1</a>获取更多信息。如果这个变量设置为空字符串(缺省值)，那么其值将以一种系统相关的方式从服务器的执行环境中继承。</p>
<p>在一些系统上，这个区域范畴并不存在，不过仍然允许设置这个变量，只是不会有任何效果。同样，也有可能是所期望的语言的翻译信息不存在。在这种情况下，你仍然能看到英文信息。</p>
<p>只有超级用户可以改变这个设置。因为它同时影响发送到服务器日志和客户端的信息。</p></dd>
<dt><a name="GUC-LC-MONETARY"></a><tt class="VARNAME">lc_monetary</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>为格式化金额数量设置区域。比如用于 <code class="FUNCTION">to_char</code> 函数族。可接受的值是系统相关的；参阅<a href="locale.html">节21.1</a>获取更多信息。如果这个变量设置为空字符串(缺省值)，那么其值将以一种系统相关的方式从服务器的执行环境中继承。</p></dd>
<dt><a name="GUC-LC-NUMERIC"></a><tt class="VARNAME">lc_numeric</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置用于格式化数字的区域，比如用于 <code class="FUNCTION">to_char</code> 函数族。可接受的值是系统相关的；参阅<a href="locale.html">节21.1</a>获取更多信息。如果这个变量设置为空字符串(缺省值)，那么其值将以一种系统相关的方式从服务器的执行环境中继承。</p></dd>
<dt><a name="GUC-LC-TIME"></a><tt class="VARNAME">lc_time</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置用于格式化日期和时间值的区域。目前，这个设置什么事也没干，但将来可能会有用。可接受的值是系统相关的；参阅<a href="locale.html">节21.1</a>获取更多信息。如果这个变量设置为空字符串(缺省值)，那么其值将以一种系统相关的方式从服务器的执行环境中继承。</p></dd>
</dl>
</div>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="RUNTIME-CONFIG-CLIENT-OTHER">17.10.3. 其它缺省</a></h2>
<div class="VARIABLELIST">
<dl>
<dt><a name="GUC-EXPLAIN-PRETTY-PRINT"></a><tt class="VARNAME">explain_pretty_print</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>决定 <tt class="COMMAND">EXPLAIN VERBOSE</tt> 是否使用缩进格式显示详细的查询树转储。缺省是 <tt class="LITERAL">on</tt> 。</p></dd>
<dt><a name="GUC-DYNAMIC-LIBRARY-PATH"></a><tt class="VARNAME">dynamic_library_path</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>如果需要打开一个可以动态装载的模块并且在 <tt class="COMMAND">CREATE FUNCTION</tt> 或 <tt class="COMMAND">LOAD</tt> 命令里面声明的名字没有目录部分(也就是说名字里不包含斜杠)，那么系统将搜索这个目录以查找声明的文件。</p>
<p>用于 <tt class="VARNAME">dynamic_library_path</tt> 的数值必须是一个冒号分隔(或者是在 Windows 上分号分隔)的绝对路径列表。如果一个路径名字以特殊变量 <tt class="LITERAL">$libdir</tt>(PostgreSQL 编译好的库目录)开头，那么就替换为 PostgreSQL 发布提供的模块安装路径。这是标准 PostgreSQL 发布提供的模块安装的目录(使用 <tt class="LITERAL">pg_config --pkglibdir</tt> 打印这个目录名)。比如：</p>
<pre class="PROGRAMLISTING">dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'</pre>
<p>或者是在 Windows 环境里：</p>
<pre class="PROGRAMLISTING">dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'</pre>
<p>这个参数的缺省值是 <tt class="LITERAL">'$libdir'</tt> 。如果把这个值设置为一个空字符串，则关闭自动路径搜索。</p>
<p>这个参数可以在运行时由超级用户修改，但是这么修改的设置只能保持到这个客户端连接的结束，因此这个方法应该保留给开发用途使用。我们建议在 <tt class="FILENAME">postgresql.conf</tt> 配置文件里设置。</p></dd>
<dt><a name="GUC-GIN-FUZZY-SEARCH-LIMIT"></a><tt class="VARNAME">gin_fuzzy_search_limit</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>GIN 索引返回的集合尺寸软上限。更多信息参见<a href="gin-tips.html">节51.4</a>。</p></dd>
<dt><a name="GUC-LOCAL-PRELOAD-LIBRARIES"></a><tt class="VARNAME">local_preload_libraries</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>指定在开始连接前预先加载一个或多个共享库，多个库之间用逗号分隔。该参数不能在会话开始之后更改。</p>
<p>因为并非只有超级用户才能更改此选项，因此只能加载安装的标准库目录下 <tt class="FILENAME">plugins</tt> 子目录中的库文件，数据库管理员有责任确保该目录中的库都是安全的。<tt class="VARNAME">local_preload_libraries</tt> 中指定的项可以明确含有该目录，例如 <tt class="LITERAL">$libdir/plugins/mylib</tt> ；也可以仅指定库的名字，例如 <tt class="LITERAL">mylib</tt>(等价于 <tt class="LITERAL">$libdir/plugins/mylib</tt>)。</p>
<p>在会话开始之前加载模块与在回话中使用到该模块的时候临时加载相比并不具有性能优势。这个特性的目的是为了调试或者测量在特定会话中不明确使用 <tt class="COMMAND">LOAD</tt> 加载库时的性能。例如针对某个用户将该参数设为 <tt class="COMMAND">ALTER USER SET</tt> 来进行调试。</p>
<p>如果指定的库未找到，那么连接将失败。</p>
<p>每一个支持 PostgreSQL 的库都有一个"magic block"用于确保兼容性。因此不支持 PostgreSQL 的库不能通过这个方法加载。</p></dd>
</dl>
</div>
</div>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="runtime-config-autovacuum.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="runtime-config-locks.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top">自动清理</td><td width="34%" align="center" valign="top"><a href="runtime-config.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">锁管理</td></tr>
</table>
</div>
</body></html>